#ifndef PARAFLUIDSPHPOSITION_H
#define PARAFLUIDSPHPOSITION_H

#include "parafluidatomvoxelizer.h"
#include "parafluidsph.h"

namespace ParaFluid
{
	
	class PositionUpdater
		: public AtomVoxelizer::ReadWriteVisitor
	{
		
	public:
		
		virtual ~PositionUpdater();
		
		PositionUpdater();
		
		void visit(Atom & value);
		
		void updatePosition(SPH & sph);
		
		void updatePositionParallel(SPH & sph, int indexFirst, int indexLast);
		
	private:
		
		SPH * _SPH;
		
		PositionUpdater(const PositionUpdater & other);
		
		PositionUpdater & operator= (const PositionUpdater & rhs);
		
	};
	
}

#endif
